package com.zs.demo111.web.fegin;

import com.zs.demo111.web.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

//@FeignClient("user")	//不带降级	demo工程调用user工程方法输出
//带降级配置 设置降级类			调用其他服务时 该其他服务熔断 自适应在本服务写一个降级方案
//服务调用端demo111	调用服务名			降级类
@FeignClient(name = "user",fallback = UserActionHystrix.class)
public interface IUserAction {

	@RequestMapping("user")	//映射到服务user地址
	public String user();

	@RequestMapping("hello")		//接口加RequestParam 才能传简单参数
	public String hello(@RequestParam("name") String name);

	@RequestMapping("add")
	public int add(@RequestParam("a") int a,@RequestParam("b") int b);

	/*
	@RequestParam 用于给简单的参数添加参数名
				  请求参数在地址中,头行
	@RequestBody  会将对象参数写入请求body中,json格式 有且仅有一个body参数 要是想传多个对象 必须封装成一个对象
				请求端跟响应端都要加 RequestBody 只能用一次
				RequestBody 跟 RequestParam可以同用 一个加在地址栏 一个加在body 不冲突

	@PathVariable 传地址参数

	 */
	@RequestMapping("reg")
	public User reg(@RequestBody User user);

	@RequestMapping("path/{ptest}")
	public String ptest(@PathVariable("ptest") String ptest);

}
